const path = require('path')
const StylelintPlugin = require('stylelint-webpack-plugin')
// const { cosmiconfig, cosmiconfigSync } = require('cosmiconfig');
// const explorer = cosmiconfig('style');
// explorer.load('./.stylelintrc.js');
// var px2rem = require('postcss-px2rem')
// const postcss = px2rem({
//     remUnit: 100 //基准大小 baseSize，需要和rem.js中相同
// })

// function resolve(dir) {
//   return path.join(__dirname, dir)
// }
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
    transpileDependencies: true,
    publicPath: './',
    pages: {
        index: {
            entry: 'src/main.js',
            // the source template
            template: 'public/index.html',
            // output as dist/index.html
            filename: 'index.html',
            // when using title option,
            // template title tag needs to be <title><%= htmlWebpackPlugin.options.title %></title>
            title: 'zhanle',
            // chunks to include on this page, by default includes
            // extracted common chunks and vendor chunks..

            chunks: ['chunk-vendors', 'chunk-common', 'index']
        }
    },
    // 配置webpack合并对象
    configureWebpack: (config) => {
        // if ( process.env.NODE_ENV !== 'production' ) {
        //     config.plugins = [
        //         new StylelintPlugin({
        //             files: ['**/*.css', '**/*.less', '**/*.scss', '**/*.html', '**/*.htm', '**/*.vue']
        //         })
        //     ]
        // }
        // config.plugins = [
        //     new StylelintPlugin({
        //         files: ['**/*.css', '**/*.less', '**/*.scss', '**/*.html', '**/*.htm', '**/*.vue']
        //     })
        // ]
    },
    // 配置插件
    chainWebpack: (config) => {
        config.resolve.alias.set('@', path.join(__dirname, 'src')).set('static', path.join(__dirname, 'public/static'))
        // 引入全局less变量
        // config.plugin('stylelint')
        config.plugin('stylelint').use('stylelint-webpack-plugin')
        // const oneOfsMap = config.module.rule('less').oneOfs.store
        // oneOfsMap.forEach((item) => {
        //     item.use('sass-resources-loader')
        //         .loader('sass-resources-loader')
        //         .options({
        //             // 这里填入你的样式文件地址,也可以是数组
        //             resources: ['./src/assets/css/reset.css', './src/assets/css/common.less']
        //         })
        //         .end()
        // })
        // 添加babel配置到packages
        config.module
            .rule('js')
            .include.add('/packages')
            .end()
            .use('babel')
            .loader('babel-loader')
            .tap((options) => {
                return options
            })
        // config.module
        //     .rule('eslint')
        //     .use('eslint-loader')
        //     .loader('eslint-loader')
        //     .options({
        //         fix: true
        //     })
        // config.entry("main").add("@babel/polyfill");
    },
    // 配置style第三方插件
    pluginOptions: {
        lintStyleOnBuild: true,
        stylelint: {
            fix: true, // boolean (default: true)
            files: ['**/*.{vue,htm,html,css,sss,less,scss,sass}'], // string | [string] (default: ['src/**/*.{vue,htm,html,css,sss,less,scss}'])
            // See https://stylelint.io/developer-guide/formatters/
            formatter: () => {} // function (default: require('stylelint-codeframe-formatter'))
            // etc...
        }
    },
    css: {
        extract: false
    },
    // 打包时移除.map文件
    productionSourceMap: false
    // chainWebpack(config) {
    // 	config.resolve.alias.set('@', resolve('src'))

    // 	config.module
    // 		.rule('svg')
    // 		.uses.clear()
    // 		.end()
    // 	// set svg-sprite-loader
    // 	config.module
    // 	  .rule('svg')
    // 	  .exclude.add(resolve('src/icons'))
    // 	  .end()
    // 	config.module
    // 	  .rule('icons')
    // 	  .test(/\.svg$/)
    // 	  .include.add(resolve('src/icons'))
    // 	  .end()
    // 	  .use('svg-sprite-loader')
    // 	  .loader('svg-sprite-loader')
    // 	  .options({
    // 	    symbolId: 'icon-[name]'
    // 	  })
    // 	  .end()
    // }
})
